﻿/*var newWindow = PopUpManager.createPopUp(Main.mixerWin, Window, true);*/
import mx.containers.Window;
import mx.managers.PopUpManager;
import mx.controls.TextArea;
//import mx.controls.TextArea;
class ru.vega_int.firsoff.Logger
{
	/*___________properties____________*/
	////////////// PRIVATE
	// ссылка на экземпляр  окна
	private static var logWindow:MovieClip;
	// ссылка на мувик микшера
	private static var mixerWin:MovieClip;
	// слушатель событий для окна
	private static var logWindowListener:Object = new Object();
	// слушатель клавиатуры
	private static var keyListener:Object = new Object();
	// экземпляр TextArea
	private static var log_ta:TextArea;
	// массив лога
	private static var log_array:Array;
	// флаг говорит что окна нет на сцене
	private static var flagVisible:Boolean = false;
	// таймер обновления
	private static var timer:Number;
	////////////// PUBLIC
	/*___________methods____________*/
	////////////// PRIVATE
	// вывод лога в поле TextArea
	private static function updateLog():Void
	{
		var outString:String = '---------- begin log ------------' + '\n';
		for(var i:Number = 0; i < log_array.length; i++)
		{
			outString += i + '. ' + log_array[i] + '\n';
		}
		outString += '---------- end log --------------';
		log_ta.text = outString;
	}
	// настройка клавы для вызова лога
	private function initKey():Void
	{
		keyListener.onKeyDown = eventHandlerDebug;
		Key.addListener(keyListener);
		function eventHandlerDebug():Void
		{
			
			if (Key.isDown(Key.CONTROL) && Key.getCode() == 53) 
			{
				
				if(flagVisible)
				{
					clearInterval(timer);
					logWindow.deletePopUp();
					flagVisible = false;
				}
				else
				{
					showLogWindow();
					//timer = setInterval(updateLog, 300);
					updateLog();
					//trace(outString);
				}
			}
		}
	}
	////////////// PUBLIC
	// показать лог
	public static function showLogWindow():Void
	{
		
		logWindow = PopUpManager.createPopUp(mixerWin, Window, false,{contentPath:"TextArea"});
		// настройки окна
		logWindow.title = "version: "+_global.version + '     last update: '+ _global.update + '      author : '+_global.author;
		logWindow.setSize(Stage.width*0.6, Stage.height*0.5);
		logWindow.move((Stage.width - logWindow._width)/2, (Stage.height - logWindow._height)/2);
		logWindow.closeButton = true;
		logWindow.swapDepths(mixerWin.getNextHighestDepth());
		// обработчики функций
		logWindowListener.click = function(){logWindow.deletePopUp();flagVisible = false;}
		logWindowListener.complete = function()
		{
			// флаг видимости окна
			flagVisible = true;
			// настраиваем переменные для TextArea
			log_ta = logWindow.content;
			log_ta.editable = false;
			updateLog();
			
		}
		// заносим функции в слушатель
		logWindow.addEventListener("click", logWindowListener);
		logWindow.addEventListener("complete", logWindowListener);
		//trace('logWindow = '+logWindow);
	}
	// занести строку в лог
	public static function addLogString(STR:String):Void
	{
		if(log_array.length == 0 || log_array == undefined)
		{
			log_array = new Array();
		}
		if(STR != null && STR != undefined && STR != '')
		{
			log_array.push(STR);
		}
	}
	
	/*_________constructor__________*/
	function Logger(MIXER_WIN:MovieClip)
	{
		mixerWin = MIXER_WIN;
		mixerWin._lockroot = true;
		//log_array = new Array();
		initKey();
	}	
}